package main

import (
	"fmt"
	"github.com/spf13/cobra"
	"os"
)

func main() {
	// 创建根命令
	var rootCmd = &cobra.Command{
		Use:   "testCmd", // 根命令名称
		Short: "测试命令",    // 根命令简短描述
		Long:  `根命令详细描述`, // 根命令详细描述
		Run: func(cmd *cobra.Command, args []string) {
			// 根命令的执行逻辑
			fmt.Println("根命令执行啦")
		},
	}

	// 创建子命令1
	var helloCmd = &cobra.Command{
		Use:   "hello",                // 子命令名称
		Short: "Prints Hello, World!", // 子命令简短描述
		Run: func(cmd *cobra.Command, args []string) {
			// 执行子命令时的逻辑
			fmt.Println("Hello, World!")
		},
	}

	// 创建子命令2
	var greetCmd = &cobra.Command{
		Use:   "greet [name]",            // 子命令名称，接受一个参数
		Short: "Greets a person by name", // 子命令简短描述
		Args:  cobra.ExactArgs(1),        // 确保只有一个参数传递
		Run: func(cmd *cobra.Command, args []string) {
			// 获取参数
			name := args[0]
			fmt.Printf("Hello, %s!\n", name)
		},
	}

	// 向根命令添加子命令
	rootCmd.AddCommand(helloCmd)
	rootCmd.AddCommand(greetCmd)

	// 执行命令
	if err := rootCmd.Execute(); err != nil {
		fmt.Println(err)
		os.Exit(1)
	}
}
